package com.thread.threadfirst.javaBase.AnnotationSample;

import com.thread.threadfirst.ThreadFirstApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThreadFirstApplication.class)
public class AnnotationSampleByteToIntTest {

    @Autowired
    private Driver driver;

    @Autowired
    private Car car;

    @Test
    public void contextLoads() {
        boolean result = driver.getCar() == car;
        //如果AnnotationSample类的注解是@Configuration 输出同一个car，如果是@Component 输出不同的car，显然生成Driver对象和生成Car对象时执行car()方法执行了2次new操作，所以是不同的对象。
        //这是因为有@Configuration的类会进行CGLIB代理。所以可以理解为@Configuration注解是单例模式 而@Component是使用一次实例化一次。
        System.out.println(result ? "同一个car" : "不同的car");
    }

}
